﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Collections.Specialized;
using com.creditos.be.liclSeguridad;
using com.creditos.config;
using System.Configuration;
using System.Collections;
using System.Text;

public partial class Shared_Creditos : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            HtmlGenericControl htmControl = new HtmlGenericControl("LINK");
            htmControl.Attributes.Add("rel", "stylesheet");
            htmControl.Attributes.Add("type", "text/css");
            htmControl.Attributes.Add("href", string.Format("../App_Themes/{0}/{0}.css", Page.StyleSheetTheme));
            Controls.Add(htmControl);

            CreditosSiteMapProvider smpSTS = new CreditosSiteMapProvider();
            smpSTS = CargarMenuPrincipal();

            SiteMapDataSource smdSTS = new SiteMapDataSource();
            smdSTS.Provider = smpSTS;

            UCCabecera1.MenuPrincipal.DataSource = smdSTS;
            UCCabecera1.MenuPrincipal.DataBind();
            foreach (MenuItem opcion in UCCabecera1.MenuPrincipal.Items[0].ChildItems)
                opcion.Selectable = false;
        }

    }
    #region Menu
    /// <summary>
    /// Este metodo deberia recibir como parametro la(s) entidade(s) almacenadas en sesion
    /// que contienen informacion del usuario, opciones, etc, etc
    /// </summary>
    /// <returns></returns>
    public CreditosSiteMapProvider CargarMenuPrincipal()
    {
        CreditosSiteMapProvider smpSTS = new CreditosSiteMapProvider();

        smpSTS.AgregarRaiz("", "", "");

        if (HttpContext.Current.Session["UsuarioActual"] != null)
        {
            List<OpcionBE> lstOpciones = new List<OpcionBE>();
            lstOpciones = (List<OpcionBE>)((UsuarioBE)HttpContext.Current.Session["UsuarioActual"]).Opciones;

            String IdPadre = OpcionTipo.PADRE;
            CargarMenuPrincipalRecursivo(lstOpciones, IdPadre, null, smpSTS);
        }

        return smpSTS;
    }
    public bool MenuPrincipalVisible
    {
        get { return UCCabecera1.MenuPrincipal.Visible; }
        set { UCCabecera1.MenuPrincipal.Visible = value; }
    }
    #endregion
    #region  LLenarSiteMap

    public void CargarMenuPrincipalRecursivo(List<OpcionBE> permisos, String IdPadre, SiteMapNode nodo, CreditosSiteMapProvider smpSTS)
    {
        if (nodo == null)
        {
            nodo = smpSTS.RootNode;
        }
        foreach (OpcionBE permiso in permisos)
        {
            if (permiso.Padre.ToString().Equals(IdPadre))
            {
                SiteMapNode nodop = smpSTS.AgregarNodo(nodo, permiso.Url, permiso.Nombre, permiso.CodigoOpcion.ToString());
                CargarMenuPrincipalRecursivo(permisos, permiso.CodigoOpcion.ToString(), nodop, smpSTS);
            }
        }
    }

    #endregion
    public void OcultarMensaje()
    {
        lblMensaje.Text = string.Empty;
        pnlMensaje.Visible = false;
    }
    public void MostrarMensaje(string mensaje)
    {
        lblMensaje.Text = mensaje;
        pnlMensaje.Visible = true;
    }
    public void MostrarMensaje(string mensaje,int tipo)
    {
        lblMensaje.Text = mensaje;
        if (tipo == 0)
            lblMensaje.ForeColor = System.Drawing.Color.Red;
        else if(tipo==1)
            lblMensaje.ForeColor = System.Drawing.Color.Blue;
        pnlMensaje.Visible = true;
    }
    #region Titulomodulo
    public string TituloModulo
    {
        set { lblTituloModulo.Text = value; }
    }
    #endregion
    public struct OpcionTipo
    {
        public const string PADRE = "0";
    }
    public enum TipoMensaje
    {
        Exito = 1,
        Error = 2,
        Advertencia = 3,
        Informacion = 4
    }

    public struct UrlImagenTipoMensaje
    {
        public const string URLIMAGE_ERROR = "~/Image/Mensajes/error.gif";
        public const string URLIMAGE_EXITO = "~/Image/Mensajes/exito.gif";
        public const string URLIMAGE_ADVERTENCIA = "~/Image/Mensajes/alerta.jpg";
        public const string URLIMAGE_INFORMACION = "~/Image/Mensajes/exito.gif";
    }
}
